//如果指定的property 的值是一个函数，那么将在object上下文内调用它;否则，返回它。如果提供默认值，并且属性不存在，那么默认值将被返回。如果设置defaultValue是一个函数，它的结果将被返回。

import isFunction from "../object/isFunction"

export default function result(obj: object, path, fallback?) {
  if (!Array.isArray(path)) {
    path = [path]
  }
  var length = path.length
  if (!length) {
    return isFunction(fallback) ? fallback.call(obj) : fallback
  }
  for (var i = 0; i < length; i++) {
    var prop = obj = null ? void 0 : obj[path[i]]
    if (prop === void 0) {
      prop = fallback
      i = length
    }
    obj = isFunction(prop) ? prop.call(obj) : prop

  }
  return obj
}